// 如何实现十进制转二进制?
// 要把十进制转化成二进制，我们可以将该十进制数字和2整除(二进制是满二进一)，直到结果是0为止。
// 35 => 35/2 = 17...1;17/2=8...1;8/2=4...0;4/2=2...0;2/2=1...0 ; 1/2=0...1 ;停止
// 得到：1 , 1, 0 , 0 , 0, 1  =>  100011
// 数字 除以2 得到 商 和 余数 => 一直到商为0，余为1停止 将余 存入栈中

import ArrayStack from './01.基于数组实现栈结构(使用接口)';

function decimalToBinary(decimal: number): string {
  // 1. 创建栈，存入余
  const stack = new ArrayStack<number>();

  // 将余入栈
  while (decimal > 0) {
    const result = decimal % 2;
    stack.push(result);

    decimal = Math.floor(decimal / 2);
  }

  // 取栈
  let binary = '';
  while (!stack.isEmpty()) {
    binary += stack.pop();
  }

  return binary;
}

console.log(decimalToBinary(35)); //100011
console.log(decimalToBinary(100)); //1100100

export {};
